Ejemplo sobre como definir una estructura de excepciones, a partir de una excepcion genérica
Codigo de EjemploEn este ejemplo vamos a definir una estructura de excepciones para manejar varios errores
La estructura del proyecto es esta:
Primero definimos una excepción genérica que extenderá de Exception
package main.exception;
public class ValidateException extends Exception {
public ValidateException(String message){
super(message);
}
}
A continuación definimos excepciones que descenderan de esa excepción génerica, primer definimos una excepción para indicar un texto con longitud invalida:
package main.exception;
public class InvalidLengthException extends ValidateException{
public InvalidLengthException(String message){
super(message);
}
}
Y definimos otra para los textos que empiecen por un numero invalido:
package main.exception;
public class InvalidNumberException extends ValidateException{
public InvalidNumberException(String message){
super(message);
}
}
A continuación definimos una clase validate que tendrá dos funciones para hacer validaciones sobre un texto, estas funciones serán las que lancen una excepción u otra si no se cumple la validación, ademas tenemos que indicar con throws que las funciones pueden lanzar una excepción concreta:
package main;
import main.exception.InvalidLengthException;
import main.exception.InvalidNumberException;
public class Validate {
public void validateText(String text) throws InvalidLengthException{
if(text.length() < 5){
throw new InvalidLengthException("Longitud invalida");
}
}
public void validateNumbers(String text) throws InvalidNumberException{
if(text.charAt(0) == '1'){
throw new InvalidNumberException("Empieza con 1");
}
}
}
Y por último en la función main creamos un objeto validate y llamamos a sus funciones pasandole un texto, las llamadas a estas funciones se meten dentro de un bloque try catch para capturar las excepciones que puedan lanzar las funciones.
Como ambas excepciones descienden de ValidateException podemos capturar la excepción genérica directamente para manejar las excepciones, o incluso si se llamasen desde otra funcion y queremos indicar un throws en la funcion que puede lanzar esas excepciones podemos indicar la excepción genérica para hacer referencia a las dos excepciones.
package main;
import main.exception.InvalidNumberException;
import main.exception.ValidateException;
public class App
{
public static void main( String[] args )
{
String text = "1tex";
Validate validate = new Validate();
try{
validate.validateText(text);
}catch(ValidateException error){
System.out.println(error.getMessage());
}
try{
validate.validateNumbers(text);
}catch(InvalidNumberException error){
System.out.println(error.getMessage());
}
}
}
Java | Exception | throw